//
//  LFEditToolbar.h
//  LFImagePickerController
//
//  Created by LamTsanFeng on 2017/3/14.
//  Copyright © 2017年 LamTsanFeng. All rights reserved.
//

#import <UIKit/UIKit.h>

UIKIT_EXTERN CGFloat kToolbar_MainHeight;
UIKIT_EXTERN CGFloat kToolbar_SubHeight;
UIKIT_EXTERN NSUInteger kToolbar_MaxItems;

typedef NS_ENUM(NSUInteger, LFEditToolbarType) {
    /** 绘画 */
    LFEditToolbarType_draw = 1 << 0,
    /** 贴图 */
    LFEditToolbarType_sticker = 1 << 1,
    /** 文本 */
    LFEditToolbarType_text = 1 << 2,
    /** 模糊 */
    LFEditToolbarType_splash = 1 << 3,
    /** 修剪 */
    LFEditToolbarType_crop = 1 << 4,
    /** 音频 */
    LFEditToolbarType_audio = 1 << 5,
    /** 剪辑 */
    LFEditToolbarType_clip = 1 << 6,
    /** 滤镜 */
    LFEditToolbarType_filter = 1 << 7,
    /** 速率 */
    LFEditToolbarType_rate = 1 << 8,
    /** 所有 */
    LFEditToolbarType_All = ~0UL,
};

typedef NS_ENUM(NSUInteger, EditToolbarBrushType) {
    /** 画笔 */
    EditToolbarBrushTypePaint = 0,
    /** 双色笔 */
    EditToolbarBrushTypeHighlight,
    /** 粉笔 */
    EditToolbarBrushTypeChalk,
    /** 荧光笔 */
    EditToolbarBrushTypeFluorescent,
    /** 图章 */
    EditToolbarBrushTypeStamp,
    /** 橡皮擦 */
    EditToolbarBrushTypeEraser,
};

typedef NS_ENUM(NSUInteger, EditToolbarStampBrushType) {
    /** 动物 */
    EditToolbarStampBrushTypeAnimal,
    /** 水果 */
    EditToolbarStampBrushTypeFruit,
    /** 心 */
    EditToolbarStampBrushTypeHeart,
};

@protocol LFEditToolbarDelegate;

@class LFBrush;

@interface LFEditToolbar : UIView

- (instancetype)initWithType:(LFEditToolbarType)type;

@property (nonatomic, weak) id<LFEditToolbarDelegate> delegate;

@property (nonatomic, readonly) NSUInteger items;

/** 播放速率 */
@property (nonatomic, assign) float rate;

/** 当前激活主菜单 return -1 没有激活 */
- (NSUInteger)mainSelectAtIndex;

/** 允许撤销 */
- (void)setRevokeAtIndex:(NSUInteger)index;

/** 设置绘画拾色器默认颜色（会触发代理） */
- (void)setDrawSliderColorAtIndex:(NSUInteger)index;
/** 设置绘画拾色器默认笔刷（会触发代理） */
- (void)setDrawBrushAtIndex:(EditToolbarBrushType)index subIndex:(EditToolbarStampBrushType)subIndex;
/** 设置默认模糊类型（会触发代理） */
- (void)setSplashIndex:(NSUInteger)index;
/** 设置画笔等待状态 */
- (void)setDrawBrushWait:(BOOL)isWait;
/** 设置模糊等待状态 */
- (void)setSplashWait:(BOOL)isWait index:(NSUInteger)index;

/** 选择主菜单的功能类型（会触发代理）LFEditToolbarType */
- (void)selectMainMenuIndex:(NSUInteger)index;

@end

@protocol LFEditToolbarDelegate <NSObject>


/**
 主菜单点击事件

 @param editToolbar self
 @param index 坐标（第几个按钮）
 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar mainDidSelectAtIndex:(NSUInteger)index;
/** 二级菜单点击事件-撤销 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar subDidRevokeAtIndex:(NSUInteger)index;
/** 二级菜单点击事件-按钮 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar subDidSelectAtIndex:(NSIndexPath *)indexPath;
/** 撤销允许权限获取 */
- (BOOL)lf_editToolbar:(LFEditToolbar *)editToolbar canRevokeAtIndex:(NSUInteger)index;
/** 二级菜单滑动事件-绘画 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar drawColorDidChange:(UIColor *)color;
/** 二级菜单笔刷事件-绘画 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar drawBrushDidChange:(LFBrush *)brush;
@optional
/** 二级菜单滑动事件-速率 */
- (void)lf_editToolbar:(LFEditToolbar *)editToolbar rateDidChange:(float)value;
@end
